package org.slf4as 
{
	/* {{LICENSE}} */
	
	/**
	 * ILogger.as
	 * 	All the methods for the trace/debug/warn/info/error must handle the following calls.
	 * 
	 * 	msg:String
	 *  format:String, ... args
	 * 	format:String, args:Array
	 *  
	 * 
	 * @author Andreas Rønning
	 */
	public interface ILogger 
	{	
		
		/**
		 * Return the name of this <code>Logger</code> instance.
		 */ 
		function getName():String;
		
		/**
		 * Is the logger enabled for the TRACE level
		 * 
		 * @param Optional Marker, if a marker is passed the marker options are taken into account. 
		 * @return True if this logger is enabled for the TRACE level, false otherwise.
		 */ 
		function traceEnabled(marker:IMarker=null):Boolean;
		
		/**
		 * Log a message at the TRACE level
		 */ 
		function trace(... args):void;
		
		/**
		 * Is the logger enabled for the DEBUG level
		 * 
		 * @param Optional Marker, if a marker is passed the marker options are taken into account. 
		 * @return True if this logger is enabled for the DEBUG level, false otherwise.
		 */ 
		function debugEnabled(marker:IMarker=null):Boolean;
		
		/**
		 * Log a message at the DEBUG level
		 */ 
		function debug(... args):void;
		
		/**
		 * Is the logger enabled for the WARN level
		 * 
		 * @param Optional Marker, if a marker is passed the marker options are taken into account. 
		 * @return True if this logger is enabled for the WARN level, false otherwise.
		 */ 
		function warnEnabled(marker:IMarker=null):Boolean;
		
		/**
		 * Log a message at the WARN level
		 */ 
		function warn(... args):void;
		
		/**
		 * Is the logger enabled for the INFO level
		 * 
		 * @param Optional Marker, if a marker is passed the marker options are taken into account. 
		 * @return True if this logger is enabled for the INFO level, false otherwise.
		 */ 
		function infoEnabled(marker:IMarker=null):Boolean;
		
		/**
		 * Log a message at the INFO level
		 */ 
		function info(... args):void;
		
		/**
		 * Is the logger enabled for the ERROR level
		 * 
		 * @param Optional Marker, if a marker is passed the marker options are taken into account. 
		 * @return True if this logger is enabled for the ERROR level, false otherwise.
		 */ 
		function errorEnabled(marker:IMarker=null):Boolean;
		
		/**
		 * Log a message at the ERROR level
		 */ 
		function error(... args):void;
	}
	
}